home *** CD-ROM | disk | FTP | other *** search
/ ...taking it to the Macs! / ...taking it to the Macs!.iso / Extras / ActiveX Mac SDK / ActiveX SDK / Headers / URLMON.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-12-16  |  10.7 KB  |  289 lines  |  [TEXT/CWIE]

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * urlmon.h -    Async moniker interfaces                                      *
  4. *                                                                             *
  5. *               OLE Version 2.0                                               *
  6. *                                                                             *
  7. *               Copyright (c) 1992-1996, Microsoft Corp. All rights reserved. *
  8. *                                                                             *
  9. \*****************************************************************************/
  10.  
  11. #ifndef __urlmon_h__
  12. #define __urlmon_h__
  13.  
  14.  
  15. /////////////////////////////////////////////////////////////////////////////
  16. // Typedefs for interfaces
  17.  
  18. #ifdef __cplusplus
  19. interface IBindProtocol;
  20. interface IBinding;
  21. interface IBindStatusCallback;
  22. #else
  23. typedef interface IBindProtocol IBindProtocol;
  24. typedef interface IBinding IBinding;
  25. typedef interface IBindStatusCallback IBindStatusCallback;
  26. #endif
  27.  
  28. typedef IBindProtocol * LPBINDPROTOCOL;
  29. typedef IBinding * LPBINDING;
  30. typedef IBindStatusCallback * LPBINDSTATUSCALLBACK;
  31.  
  32. EXTERN_C const IID IID_IAsyncMoniker;
  33. EXTERN_C const IID IID_IURLMoniker;
  34. EXTERN_C const IID CLSID_StdURLMoniker;
  35. EXTERN_C const IID IID_IBindProtocol;
  36. EXTERN_C const IID IID_IBinding;
  37. EXTERN_C const IID IID_IBindStatusCallback;
  38.  
  39. #define TEXT(x) x
  40.  
  41. /////////////////////////////////////////////////////////////////////////////
  42. // Misc definitions
  43.  
  44. #define SZ_URLCONTEXT           OLESTR("URL Context")
  45. #define SZ_ASYNC_CALLEE         OLESTR("AsyncCallee")
  46. #define MKSYS_URLMONIKER        6
  47.  
  48. #define CF_NULL                 0
  49. #define CFSTR_MIME_NULL         NULL
  50. #define CFSTR_MIME_FRACTALS     (TEXT("application/fractals"))   
  51. #define CFSTR_MIME_RAWDATA      (TEXT("application/octet"))      
  52. #define CFSTR_MIME_POSTSCRIPT   (TEXT("application/postscript")) 
  53. #define CFSTR_MIME_AIFF         (TEXT("audio/aiff"))             
  54. #define CFSTR_MIME_BASICAUDIO   (TEXT("audio/basic"))            
  55. #define CFSTR_MIME_WAV          (TEXT("audio/wav"))              
  56. #define CFSTR_MIME_X_AIFF       (TEXT("audio/x-aiff"))           
  57. #define CFSTR_MIME_X_REALAUDIO  (TEXT("audio/x-pn-realaudio"))   
  58. #define CFSTR_MIME_X_WAV        (TEXT("audio/x-wav"))            
  59. #define CFSTR_MIME_BMP          (TEXT("image/bmp"))              
  60. #define CFSTR_MIME_GIF          (TEXT("image/gif"))              
  61. #define CFSTR_MIME_JPEG         (TEXT("image/jpeg"))             
  62. #define CFSTR_MIME_TIFF         (TEXT("image/tiff"))             
  63. #define CFSTR_MIME_XBM          (TEXT("image/xbm"))              
  64. #define CFSTR_MIME_X_BITMAP     (TEXT("image/x-bitmap"))         
  65. #define CFSTR_MIME_HTML         (TEXT("text/html"))              
  66. #define CFSTR_MIME_TEXT         (TEXT("text/plain"))             
  67. #define CFSTR_MIME_AVI          (TEXT("video/avi"))              
  68. #define CFSTR_MIME_MPEG         (TEXT("video/mpeg"))             
  69. #define CFSTR_MIME_QUICKTIME    (TEXT("video/quicktime"))        
  70. #define CFSTR_MIME_X_MSVIDEO    (TEXT("video/x-msvideo"))        
  71. #define CFSTR_MIME_X_SGI_MOVIE  (TEXT("video/x-sgi-movie"))      
  72.  
  73. #define REG_BSCB_HOLDER          OLESTR("_BSCB_Holder_")
  74. #define REG_ENUMFORMATETC        OLESTR("_EnumFORMATETC_")
  75. #define REG_MEDIA_HOLDER         OLESTR("_Media_Holder_")
  76. #define REG_ISL_CLIENT           OLESTR("_ISL_Client_")
  77.  
  78.  
  79. /////////////////////////////////////////////////////////////////////////////
  80. // IURLMoniker interface
  81.  
  82. #undef  INTERFACE
  83. #define INTERFACE IURLMoniker
  84.  
  85. DECLARE_INTERFACE_(IURLMoniker, IUnknown)
  86. {
  87.     BEGIN_INTERFACE
  88.     // *** IUnknown methods ***
  89.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void * * ppvObj) PURE;
  90.     STDMETHOD_(unsigned long,AddRef) (THIS)  PURE;
  91.     STDMETHOD_(unsigned long,Release) (THIS) PURE;
  92.  
  93.     // *** IPersist methods ***
  94.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  95.  
  96.     // *** IPersistStream methods ***
  97.     STDMETHOD(IsDirty) (THIS) PURE;
  98.     STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE;
  99.     STDMETHOD(Save) (THIS_ LPSTREAM pStm,
  100.                     unsigned long fClearDirty) PURE;
  101.     STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER  * pcbSize) PURE;
  102.  
  103.     // *** IMoniker methods ***
  104.     STDMETHOD(BindToObject) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  105.         REFIID riidResult, void * * ppvResult) PURE;
  106.     STDMETHOD(BindToStorage) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  107.         REFIID riid, void * * ppvObj) PURE;
  108.     STDMETHOD(Reduce) (THIS_ LPBC pbc, unsigned long dwReduceHowFar, LPLPMONIKER
  109.         ppmkToLeft, LPLPMONIKER ppmkReduced) PURE;
  110.     STDMETHOD(ComposeWith) (THIS_ LPMONIKER pmkRight, unsigned long fOnlyIfNotGeneric,
  111.         LPLPMONIKER ppmkComposite) PURE;
  112.     STDMETHOD(Enum) (THIS_ unsigned long fForward, LPLPENUMMONIKER ppenumMoniker)
  113.         PURE;
  114.     STDMETHOD(IsEqual) (THIS_ LPMONIKER pmkOtherMoniker) PURE;
  115.     STDMETHOD(Hash) (THIS_ unsigned long    * pdwHash) PURE;
  116.     STDMETHOD(IsRunning) (THIS_ LPBC pbc, LPMONIKER pmkToLeft, LPMONIKER
  117.         pmkNewlyRunning) PURE;
  118.     STDMETHOD(GetTimeOfLastChange) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  119.         FILETIME * pfiletime) PURE;
  120.     STDMETHOD(Inverse) (THIS_ LPLPMONIKER ppmk) PURE;
  121.     STDMETHOD(CommonPrefixWith) (THIS_ LPMONIKER pmkOther, LPLPMONIKER
  122.         ppmkPrefix) PURE;
  123.     STDMETHOD(RelativePathTo) (THIS_ LPMONIKER pmkOther, LPLPMONIKER
  124.         ppmkRelPath) PURE;
  125.     STDMETHOD(GetDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  126.         char * * lplpszDisplayName) PURE;
  127.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPMONIKER pmkToLeft,
  128.         char * lpszDisplayName, unsigned long * pchEaten,
  129.         LPLPMONIKER ppmkOut) PURE;
  130.     STDMETHOD(IsSystemMoniker) (THIS_ unsigned long    * pdwMksys) PURE;
  131.  
  132.     // *** IURLMoniker methods ***
  133.     STDMETHOD(SetURLString)(THIS_ LPOLESTR szUrl) PURE;
  134. };
  135.  
  136.  
  137. /////////////////////////////////////////////////////////////////////////////
  138. // IBindProtocol interface
  139.  
  140. #undef  INTERFACE
  141. #define INTERFACE IBindProtocol
  142.  
  143. DECLARE_INTERFACE_(IBindProtocol, IUnknown)
  144. {
  145.     BEGIN_INTERFACE
  146.     // *** IUnknown methods ***
  147.     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  148.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  149.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  150.  
  151.     // *** IBindProtocol methods ***
  152.     STDMETHOD(CreateBinding)(THIS_ LPOLESTR szUrl, LPBINDCTX pbc, LPBINDING
  153.         *ppb) PURE;
  154. };
  155.  
  156.  
  157. /////////////////////////////////////////////////////////////////////////////
  158. // IBinding interface
  159.  
  160. #undef  INTERFACE
  161. #define INTERFACE IBinding
  162.  
  163. DECLARE_INTERFACE_(IBinding, IUnknown)
  164. {
  165.     BEGIN_INTERFACE
  166.     // *** IUnknown methods ***
  167.     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  168.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  169.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  170.  
  171.     // *** IBinding methods ***
  172.     STDMETHOD(Abort)(THIS) PURE;
  173.     STDMETHOD(Suspend)(THIS) PURE;
  174.     STDMETHOD(Resume)(THIS) PURE;
  175.     STDMETHOD(SetPriority)(THIS_ LONG nPriority) PURE;
  176.     STDMETHOD(GetPriority)(THIS_ LONG *pnPriority) PURE;
  177.     STDMETHOD(GetBindResult)(THIS_ LPCLSID pclsidProtocol, LPDWORD pdwResult,
  178.         LPOLESTR *pszResult, LPDWORD pdwReserved) PURE;
  179. };
  180.  
  181.  
  182. /////////////////////////////////////////////////////////////////////////////
  183. // IBindStatusCallback interface
  184.  
  185. #undef  INTERFACE
  186. #define INTERFACE IBindStatusCallback
  187.  
  188. typedef enum
  189. {
  190.     BINDVERB_GET       = 0x00000000,       // default action
  191.     BINDVERB_POST      = 0x00000001,       // post verb
  192.     BINDVERB_PUT       = 0x00000002,       // put verb
  193.     BINDVERB_CUSTOM    = 0x00000003       // custom verb
  194. } BINDVERB;
  195.  
  196. typedef enum
  197. {
  198.     BINDINFOF_URLENCODESTGMEDDATA   = 0x00000001,       // url encode the stgmed data
  199.     BINDINFOF_URLENCODEDEXTRAINFO   = 0x00000002       // url encode the extra info
  200. } BINDINFOF;
  201.  
  202.  
  203. // flags that describe the type of transaction that caller wants
  204. typedef enum
  205. {
  206.     BINDF_ASYNCHRONOUS              = 0x00000001,
  207.     BINDF_ASYNCSTORAGE              = 0x00000002,
  208.     BINDF_NOPROGRESSIVERENDERING    = 0x00000004,
  209.     BINDF_OFFLINEOPERATION          = 0x00000008,
  210.     BINDF_GETNEWESTVERSION          = 0x00000010,
  211.     BINDF_NOWRITECACHE              = 0x00000020,
  212.     BINDF_PULLDATA                  = 0x00000080
  213. } BINDF;
  214.  
  215. typedef struct _tagBINDINFO
  216. {
  217.     ULONG       cbSize;
  218.     LPOLESTR    szExtraInfo;        // e.g. string added to the URL string [range byte]
  219.     STGMEDIUM stgmedData;        // e.g. put or post data
  220.     DWORD       grfBindInfoF;       // e.g. how meddata should be treaded
  221.     DWORD       dwBindVerb;         // e.g. put, post, ...
  222.     LPOLESTR    szCustomVerb;       // e.g. custom verb
  223.     DWORD       cbstgmedData;       // size of data in stgmedData
  224. } BINDINFO;
  225.  
  226.  
  227. // Data notification flags
  228. typedef enum
  229. {
  230.     BSCF_FIRSTDATANOTIFICATION          = 0x00000001,
  231.     BSCF_INTERMEDIATEDATANOTIFICATION   = 0x00000002,
  232.     BSCF_LASTDATANOTIFICATION           = 0x00000004
  233. } BSCF;
  234.  
  235. typedef enum tagBINDSTATUS
  236. {
  237.      BINDSTATUS_FINDINGRESOURCE          = 1
  238.     ,BINDSTATUS_CONNECTING
  239.     ,BINDSTATUS_REDIRECTING
  240.     ,BINDSTATUS_BEGINDOWNLOADDATA
  241.     ,BINDSTATUS_DOWNLOADINGDATA
  242.     ,BINDSTATUS_ENDDOWNLOADDATA
  243.     ,BINDSTATUS_BEGINDOWNLOADCOMPONENTS
  244.     ,BINDSTATUS_INSTALLINGCOMPONENTS
  245.     ,BINDSTATUS_ENDDOWNLOADCOMPONENTS
  246.     ,BINDSTATUS_USINGCACHEDCOPY
  247.     ,BINDSTATUS_SENDINGREQUEST
  248. } BINDSTATUS;
  249.  
  250. typedef enum
  251. {
  252.     BSCO_ONSTARTBINDING     = 0x00000001,
  253.     BSCO_GETPRIORITY        = 0x00000002,
  254.     BSCO_ONLOWRESOURCE      = 0x00000004,
  255.     BSCO_ONPROGRESS         = 0x00000008,
  256.     BSCO_ONSTOPBINDING      = 0x00000010,
  257.     BSCO_GETBINDINFO        = 0x00000020,
  258.     BSCO_ONDATAAVAILABLE    = 0x00000040,
  259.     BSCO_ONOBJECTAVAILABLE  = 0x00000080,
  260.     BSCO_ALLONIBSC          = 0x000000FF,
  261.     BSCO_ALLONIBDGSITE      = 0x0000001F
  262. } BSCO_OPTION;
  263.  
  264. DECLARE_INTERFACE_(IBindStatusCallback, IUnknown)
  265. {
  266.     BEGIN_INTERFACE
  267.     // *** IUnknown methods ***
  268.     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  269.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  270.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  271.  
  272.     // *** IBindStatusCallback methods ***
  273.     STDMETHOD(OnStartBinding)(THIS_ DWORD grfBSCOption, LPBINDING pib) PURE;
  274.     STDMETHOD(GetPriority)(THIS_ LONG *pnPriority) PURE;
  275.     STDMETHOD(OnLowResource)(THIS_ DWORD reserved) PURE;
  276.     STDMETHOD(OnProgress)(THIS_ ULONG ulProgress, ULONG ulProgressMax,
  277.         ULONG ulStatusCode, LPCOLESTR szStatusText) PURE;
  278.     STDMETHOD(OnStopBinding)(THIS_ HRESULT hresult, LPCOLESTR szError) PURE;
  279.     STDMETHOD(GetBindInfo)(THIS_ LPDWORD grfBINDF, BINDINFO *pbindinfo) PURE;
  280.     STDMETHOD(OnDataAvailable)(THIS_ DWORD grfBSCF, DWORD dwSize, LPFORMATETC pformatetc, LPSTGMEDIUM pstgmed) PURE;
  281.     STDMETHOD(OnObjectAvailable)(THIS_ REFIID riid, LPUNKNOWN punk) PURE;
  282. };
  283.  
  284. #ifndef E_PENDING
  285. #define E_PENDING           MAKE_SCODE(SEVERITY_ERROR,   FACILITY_NULL, 0xA)
  286. #endif
  287.  
  288. #endif
  289.